CC=gcc
CXX=g++
INSTALL=/usr/bin/install -c
LD=gcc

CFLAGS=-g -O2
LDFLAGS=
CXXFLAGS=-g -O2

system=Darwin

nvclock_OBJECTS=nvclock.o
smartdimmer_OBJECTS=smartdimmer.o
SUBDIRS=backend nvcontrol gtk qt
HAVE_NVCONTROL=no
libbackend=./backend/libbackend.a
libnvcontrol=./nvcontrol/libnvcontrol.a

prefix=$(DESTDIR)/usr/local
exec_prefix=$(DESTDIR)${prefix}
bindir=$(DESTDIR)${exec_prefix}/bin
CFLAGS+=$(INCLUDES)

ifeq ($(system), Darwin)
    LIBS+=-framework CoreFoundation -framework IOKit
    LD=$(CXX)
endif

ifeq ($(HAVE_NVCONTROL), yes)
    ifeq ($(system), Darwin)
	LIBS+=-L/usr/X11/lib
    endif
    DEPS=$(libbackend) $(libnvcontrol)
    INCLUDES= -I./backend -I./nvcontrol -I..
    LIBS+= -L./backend -lbackend -L./nvcontrol -lnvcontrol
else
    DEPS=$(libbackend)
    INCLUDES=-I./backend -I./nvcontrol -I..
    LIBS+=-L./backend -lbackend
endif

.PHONY: all-recursive clean clean-app clean-recursive \
	distclean install install-app install-recursive


all: all-recursive nvclock smartdimmer


nvclock: $(DEPS) $(LIB) $(nvclock_OBJECTS)
	$(LD) $(LDFLAGS) -o nvclock $(nvclock_OBJECTS) $(LIBS)

smartdimmer: $(DEPS) $(LIB) $(smartdimmer_OBJECTS)
	$(LD) $(LDFLAGS) -o smartdimmer $(smartdimmer_OBJECTS) $(INCLUDES) $(LIBS)


clean: clean-recursive clean-app

clean-app:
	rm -f *.o *.a
	rm -f nvclock *.exe
	rm -f smartdimmer


distclean: distclean-recursive clean-app
	rm -f Makefile


install: install-recursive install-app
install-app:
	mkdir -p $(bindir)
	$(INSTALL) -c nvclock $(DESTDIR)$(bindir)/nvclock
	$(INSTALL) -c smartdimmer $(DESTDIR)$(bindir)/smartdimmer


uninstall: uninstall-recursive uninstall-app
uninstall-app:
	rm -f $(bindir)/smartdimmer


# Walk through the sub directories and do what is requested
all-recursive clean-recursive distclean-recursive install-recursive uninstall-recursive:
	@set fnord; target=`echo $@ | sed s/-recursive//`; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	    $(MAKE) -C $$subdir $$target ; \
	done;

